package showmebug;

import java.util.Collections;
import java.util.Comparator;
import java.util.Locale;
import java.util.stream.Collectors;

/**
 * 设计一个函数，可以传入一个或多个单词的字符串，并返回该字符串，但所有五个或更多字母的单词都前后颠倒。
 */
public class ReverseWords {


    /**
     * 字符翻转
     * @param str
     * @return
     */
    public String reverse(String str) {
        String []words = str.split(" ");
        for(int i=0; i < words.length; i++) {
            if(words[i].length() >=5) {
                words[i] = new StringBuilder(words[i]).reverse().toString();
            }
        }
        return String.join(" ", words);
    }

    /**
     * 计算有重复的字符个数
     * @param text
     * @return
     */
    public int countWord(String text) {
        text = text.toLowerCase();
        int ans = 0;
        while(text.length() > 0) {
            String first = text.substring(0,1);
            if(text.substring(1).contains(first)) {
                ans ++;
            }
            text = text.replace(first, "");
        }

        return ans;
    }

    /**
     * 数字表示成一个最大数字
     * @param num
     * @return
     */
    public int newNum(final int num) {
        String str = String.valueOf(num).chars().mapToObj(ch -> String.valueOf(Character.getNumericValue(ch)))
                        .sorted(Comparator.reverseOrder()).collect(Collectors.joining());

        return Integer.valueOf(str);
    }

    public int bitCount(int num) {
        return Integer.bitCount(num);
    }


    public static void main(String[] args) {
//        System.out.println(new ReverseWords().reverse("This is another test"));
        System.out.println(new ReverseWords().countWord("abcde"));
        System.out.println(new ReverseWords().newNum(2937265));
    }
}
